HERE

OK
`; const w = window.open("", "_blank"); if(!w){ toast("Popup blocked"); return; } w.document.open(); w.document.write(html); w.document.close(); } function openApple(){ const p=window._proof; if(!p) return; window.open(p.apple, "_blank"); } function openGoogle(){ const p=window._proof; if(!p) return; window.open(p.google, "_blank"); } function shareProof(){ const p=window._proof; if(!p) return; haptic("medium"); tapClick("tap"); tapClick("tap"); tapClick("tap"); const text = `${T('presence_text')}\n${p.time}\nCode: ${p.code}${p.name?`\nName: ${p.name}`:''}`; if(navigator.share){ navigator.share({title:'HERE', text, url:p.hereLink}).catch(()=>{}); } else { copyText(p.hereLink, T("copied")); } } function renderProof(p){ const verifyQR = qrUrl(p.verifyText, 420); const proofQR = qrUrl(p.hereLink, 420); const locQR = qrUrl(p.apple, 420); document.getElementById("main").innerHTML = `
${T("confirmed")}
${p.time}
${p.code}
${p.name?`
${p.name}
`:""}
${p.address}
${p.lat}, ${p.lng}
${T("open_map")}
${T("qr_verify")}
QR verify
Text + address
${T("qr_proof")}
QR proof
HERE link
${T("qr_location")}
QR location
Map link
${T("actions")}
`; const pill = document.querySelector(".pill"); if(pill){ pill.classList.add("successFlash"); setTimeout(()=>pill.classList.remove("successFlash"), 600); } } /* ===== Core ===== */ async function go(){ haptic("medium"); renderLoading(); if(!navigator.geolocation){ haptic("error"); tapClick("error"); toast(T("allow_location")); renderHome(); return; } // keep the name typed in memory even after loading screen const name = (document.getElementById("name")?.value || "").trim(); navigator.geolocation.getCurrentPosition(async (pos)=>{ const lat = pos.coords.latitude.toFixed(6); const lng = pos.coords.longitude.toFixed(6); const code = Math.random().toString(36).substring(2,8).toUpperCase(); const time = new Date().toLocaleString(); const apple = `https://maps.apple.com/?ll=${lat},${lng}`; const google = `https://www.google.com/maps?q=${lat},${lng}`; const address = await reverseGeocode(lat, lng); // shareable HERE link (same page) with code param const hereLink = location.origin + location.pathname + `?code=${encodeURIComponent(code)}`; const verifyText = `${T("presence_text")} ${time} Code: ${code}${name?`\nName: ${name}`:""} Address: ${address} Coords: ${lat}, ${lng} HERE: ${hereLink} MAP: ${apple}`; const p = {lat,lng,code,time,name,address,apple,google,hereLink,verifyText}; window._proof = p; localStorage.setItem(STORE_KEY, JSON.stringify(p)); haptic("success"); tapClick("success"); renderProof(p); }, ()=>{ haptic("error"); tapClick("error"); toast(T("allow_location")); renderHome(); }, {enableHighAccuracy:true, timeout:15000, maximumAge:0}); } function boot(forceHome=false){ const sel = document.getElementById("langSel"); sel.value = LANG; sel.onchange = (e)=>setLang(e.target.value); if(forceHome){ renderHome(); return; } // If coming from a shared link (?code=...), we still show the last proof if exists. const raw = localStorage.getItem(STORE_KEY); if(raw){ try{ const p = JSON.parse(raw); window._proof = p; renderProof(p); return; }catch(e){} } renderHome(); } window.addEventListener("DOMContentLoaded", boot);